15495
24624
Тут вже є відповіді на це питання:
Express js - неможливо перенаправити
(4 відповіді)
Закрито 7 років тому.
Я використовую паспорти JS з проміжним програмним забезпеченням нижче Передбачається перевірити, чи є користувач логіном, коли він запитує певні речі. Якщо він не ввійшов, його слід перенаправити на сторінку входу.
У мене є маршрут запиту наступним чином:
app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update);
Цей маршрут буде викликаний, коли користувач спробує оновити на веб-сайті ресурс Fantasy Team
auth.requiresLogin - це проміжне програмне забезпечення наступним чином:
export.requiresLogin = function (req, res, next) {
if (req.isAuthenticated ()) {
повернути наступним ()
}
повернути res.redirect ("/ signin");
};
Увійшовши до свого користувача, я змоделював закінчення терміну дії сесії, видаливши файл cookie сеансу. Після цього через веб-сайт я зробив запит PUT '/ fantasyteams / 123' щодо оновлення команди фентезі № 123.
fantasyteams.update - це просто операція збереження mongodb / mongoose:
export.update = function (req, res) {
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (function (err) {
res.jsonp (fantasyteam);
});
};
Як і очікувалось, обробник маршруту (app.put ...) вище перехопив запит, передайте його проміжному програмному забезпеченню auth.requiresLogin, щоб перевірити, чи ввійшов користувач. Таким чином, виявляється, що користувач не ввійшов у систему, оскільки я видалив його сесійне печиво. res.redirect викликається, як очікувалося. Однак веб-сайт не переспрямовує на сторінку входу. Я бачу це в журналах команд node.js:
ВСТУП / підпис 404 328мс
Що я зробив неправильно? 
Схоже, проблема в тому, що у вас немає обробника маршруту для PUT / входу. Початковий запит був путом, тому, коли він переспрямовує, він все ще є частиною того самого запиту на пут із браузера. Просто додайте обробник для put / post / whatever з app.all ('/ signin')
3
|
Не відповідь, яку ви шукаєте? Перегляньте інші запитання, позначені тегами файлів cookie сеансу node.js, що виражають паспорт.js або задайте власне запитання.